﻿//------------------------------------------------------------------------------
// ╭─────────────────────────────╮
// │ ╭─╮     ╭─╮              TM │   ╠═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╣
// │ │ │     │ │                 │                                           ☺  
// │ │ ╰───╮ │ │ ╭─────╮ ╭─────╮ │     Name:Wedn.Net 数据库上下文工厂类   ♮ ♪ ♩
// │ │ ╭─╮ │ │ │ │ ╭─╮ │ │ ╭─╮ │ │                                    ♫ ♭      
// │ │ ╰─╯ │ │ │ │ ╰─╯ │ │ ╰─╯ │ │     Author:iceStone               ♬ ♪       
// │ └─────╯ └─╯ ╰─────╯ ╰───╮ │ │     Chinese:汪磊                              
// │                     ┌───╯ │ │                                              
// │                     ╰─────╯ │   ╠═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╣
// ╰─────────────────────────────╯                                              
//------------------------------------------------------------------------------
using System.Data.Entity;
using System.Runtime.Remoting.Messaging;
using Wedn.Net.Model;

namespace Wedn.Net.DAL
{
    /// <summary>
    /// 数据库上下文工厂类
    /// </summary>
    public static class Factory
    {
        /// <summary>
        /// 取当前线程内唯一的数据库上下文
        /// </summary>
        /// <returns>数据库上下文</returns>
        public static DbContext GetCurrentDbContext()
        {
            //return new DataModelContainer();
            //先去线程数据槽里去拿数据
            //如果没有数据： 创建一个Ef上下文，然后放到数据槽里面去。返回数据。
            var db = CallContext.GetData("CurrentDbContext") as DbContext;

            if (db == null)
            {
                db = new DataModelContainer();
                CallContext.SetData("CurrentDbContext", db);
            }
            return db;
        }
    }
}
